package org.wzy.xmlg_backend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.wzy.xmlg_backend.dto.AnnouncementDTO;
import org.wzy.xmlg_backend.entity.Announcement;

import java.util.List;

public interface IAnnouncementService extends IService<Announcement> {
    
    /**
     * 发布公告
     * @param announcement 公告信息
     * @param publisherId 发布人ID
     * @return 是否成功
     */
    boolean publishAnnouncement(Announcement announcement, Integer publisherId);
    
    /**
     * 保存草稿
     * @param announcement 公告信息
     * @param publisherId 发布人ID
     * @return 是否成功
     */
    boolean saveDraft(Announcement announcement, Integer publisherId);
    
    /**
     * 获取公告列表
     * @return 公告列表
     */
    List<Announcement> getAnnouncementList();
    
    /**
     * 获取公告DTO列表
     * @return 公告DTO列表
     */
    List<AnnouncementDTO> getAnnouncementDTOList();
    
    /**
     * 根据发布人获取公告列表
     * @param publisherId 发布人ID
     * @return 公告列表
     */
    List<Announcement> getAnnouncementsByPublisher(Integer publisherId);
    
    /**
     * 根据发布人获取公告DTO列表
     * @param publisherId 发布人ID
     * @return 公告DTO列表
     */
    List<AnnouncementDTO> getAnnouncementDTOsByPublisher(Integer publisherId);
    
    /**
     * 根据ID获取公告DTO
     * @param id 公告ID
     * @return 公告DTO
     */
    AnnouncementDTO getAnnouncementDTOById(Integer id);
    
    /**
     * 更新公告
     * @param announcement 公告信息
     * @return 是否成功
     */
    boolean updateAnnouncement(Announcement announcement);
    
    /**
     * 删除公告
     * @param id 公告ID
     * @return 是否成功
     */
    boolean deleteAnnouncement(Integer id);
}